মডেলের মধ্যে সম্পর্ক (One-to-One, One-to-Many, Many-to-Many)

Web Development - জ্যাঙ্গো (Django) - Django ডাটাবেস সম্পর্ক এবং ORM কুয়েরি
207

Django ORM (Object-Relational Mapping) ব্যবহারের মাধ্যমে ডেটাবেসের বিভিন্ন মডেলের মধ্যে সম্পর্ক তৈরি করা যায়। এটি ডেটাবেস টেবিলগুলোর মধ্যে সম্পর্ক স্থাপন এবং তাদের মধ্যে ডেটা পরিচালনা সহজ করে। Django তিনটি প্রধান ধরনের সম্পর্ক সমর্থন করে:

  1. One-to-One সম্পর্ক
  2. One-to-Many সম্পর্ক (ForeignKey)
  3. Many-to-Many সম্পর্ক

এগুলির মধ্যে সম্পর্কগুলি কীভাবে তৈরি এবং ব্যবহৃত হয় তা নিচে বিস্তারিতভাবে আলোচনা করা হলো।


১. One-to-One সম্পর্ক

One-to-One সম্পর্ক হল যখন একটি অবজেক্ট একটির সাথে সম্পর্কিত থাকে এবং অন্যটি শুধুমাত্র একটি অবজেক্টের সাথে সম্পর্কিত থাকে। এই সম্পর্কটি সাধারণত যখন একটি ইউজারের বিস্তারিত তথ্য সংরক্ষণ করতে হয়, তখন ব্যবহৃত হয়। উদাহরণস্বরূপ, একটি User মডেলের সাথে সম্পর্কিত একটি Profile মডেল।

উদাহরণ:

from django.db import models

class User(models.Model):
    username = models.CharField(max_length=100)
    email = models.EmailField()

    def __str__(self):
        return self.username


class Profile(models.Model):
    user = models.OneToOneField(User, on_delete=models.CASCADE)
    bio = models.TextField()
    birthdate = models.DateField()

    def __str__(self):
        return self.user.username

এখানে:

  • OneToOneField ব্যবহৃত হয়েছে, যা User মডেলের সাথে Profile মডেলকে একে অপরের সাথে সংযুক্ত করেছে। এটি একে অপরের সাথে একক সম্পর্ক (One-to-One) তৈরি করে।

ব্যবহার:

# Create a User object
user = User.objects.create(username='john_doe', email='john@example.com')

# Create a Profile object related to the User
profile = Profile.objects.create(user=user, bio='A web developer', birthdate='1990-01-01')

এটি User এবং Profile মডেলগুলির মধ্যে একে অপরের সাথে সম্পর্ক স্থাপন করবে।


২. One-to-Many সম্পর্ক (ForeignKey)

One-to-Many সম্পর্ক হল যখন একটি অবজেক্ট একাধিক অবজেক্টের সাথে সম্পর্কিত থাকে। সাধারণত এই সম্পর্কটি ForeignKey ফিল্ড ব্যবহার করে তৈরি করা হয়, যেখানে এক টেবিলের একটি রেকর্ড অন্য টেবিলের একাধিক রেকর্ডের সাথে সম্পর্কিত থাকে। উদাহরণস্বরূপ, একটি Author মডেল এবং তার সাথে সম্পর্কিত Book মডেল।

উদাহরণ:

class Author(models.Model):
    name = models.CharField(max_length=100)

    def __str__(self):
        return self.name


class Book(models.Model):
    title = models.CharField(max_length=100)
    author = models.ForeignKey(Author, on_delete=models.CASCADE)
    
    def __str__(self):
        return self.title

এখানে:

  • ForeignKey ফিল্ডটি Book মডেলে ব্যবহৃত হয়েছে, যা Author মডেলের সাথে One-to-Many সম্পর্ক স্থাপন করেছে। এক Author একাধিক Book এর সাথে সম্পর্কিত হতে পারে।

ব্যবহার:

# Create an Author object
author = Author.objects.create(name='J.K. Rowling')

# Create multiple Book objects related to the Author
book1 = Book.objects.create(title='Harry Potter and the Sorcerer\'s Stone', author=author)
book2 = Book.objects.create(title='Harry Potter and the Chamber of Secrets', author=author)

এখানে, এক Author একাধিক Book এর সাথে সম্পর্কিত, যা One-to-Many সম্পর্কের উদাহরণ।


৩. Many-to-Many সম্পর্ক

Many-to-Many সম্পর্ক হল যখন একাধিক অবজেক্ট একাধিক অবজেক্টের সাথে সম্পর্কিত থাকে। Django তে Many-to-Many সম্পর্ক তৈরি করতে ManyToManyField ব্যবহার করা হয়। উদাহরণস্বরূপ, একটি Student মডেল এবং একটি Course মডেল, যেখানে এক ছাত্র একাধিক কোর্সে ভর্তি হতে পারে এবং এক কোর্সে একাধিক ছাত্র থাকতে পারে।

উদাহরণ:

class Course(models.Model):
    name = models.CharField(max_length=100)

    def __str__(self):
        return self.name


class Student(models.Model):
    name = models.CharField(max_length=100)
    courses = models.ManyToManyField(Course)

    def __str__(self):
        return self.name

এখানে:

  • ManyToManyField ব্যবহৃত হয়েছে, যা Student মডেলের মধ্যে একাধিক Course এর সাথে সম্পর্ক স্থাপন করেছে। এর মাধ্যমে এক ছাত্র একাধিক কোর্সে ভর্তি হতে পারে এবং এক কোর্সে একাধিক ছাত্র থাকতে পারে।

ব্যবহার:

# Create Course objects
course1 = Course.objects.create(name='Math 101')
course2 = Course.objects.create(name='Science 101')

# Create a Student object
student = Student.objects.create(name='Alice')

# Add courses to the student
student.courses.add(course1, course2)

এখানে, Student মডেলের মধ্যে ManyToManyField ব্যবহার করে একাধিক কোর্স যোগ করা হয়েছে এবং এক কোর্সে একাধিক ছাত্র থাকতে পারে।


সারাংশ

Django তে One-to-One, One-to-Many (ForeignKey) এবং Many-to-Many (ManyToManyField) সম্পর্কগুলির মাধ্যমে বিভিন্ন মডেলের মধ্যে সম্পর্ক স্থাপন করা যায়। এই সম্পর্কগুলো ডেটাবেসের মধ্যে টেবিল গুলির মধ্যে সম্পর্ক তৈরি করতে ব্যবহৃত হয়।

  • One-to-One সম্পর্ক: এক মডেল এককভাবে অন্য মডেলের সাথে সম্পর্কিত থাকে।
  • One-to-Many সম্পর্ক: এক মডেল একাধিক রেকর্ডের সাথে সম্পর্কিত থাকে।
  • Many-to-Many সম্পর্ক: একাধিক মডেল একাধিক রেকর্ডের সাথে সম্পর্কিত থাকে।

এই সম্পর্কগুলি Django ORM ব্যবহারের মাধ্যমে সহজে তৈরি এবং পরিচালনা করা যায়।

Content added By
Promotion
NEW SATT AI এখন আপনাকে সাহায্য করতে পারে।

Are you sure to start over?

Loading...